import os
from flask import Flask


def create_app(config=None):
    # 生成核心对象
    app = Flask(__name__)
    # 加载config配置
    # app.config 本质上就是dict，继承dict类，添加了很多方法
    app.config.from_object('config.settings')

    # 加载系统环境配置
    # 根据不同的系统环境变量，加载不同的配置文件
    if 'FLASK_CONF' in os.environ:
        app.config.from_envvar('FLASK_CONF')

    if config is not None:
        # 如果config传入的是一个字典，直接更新当前config的值（因为config原本就是字典）
        if isinstance(config, dict):
            app.config.update(config)
        # 如果是.py文件
        elif config.endswith(".py"):
            app.config.from_pyfile(config)
    # 导入router，运行__init__.py
    import router
    # 把蓝图（即路由）注册到app上
    router.init_app(app)

    # 绑定orm对象
    import model
    model.init_app_db(app)

    return app
